// 单页面应用 配置前端路由

import SMERouter from 'sme-router'

// 引入HTMl
// import loginView from '$v/login.html'
// import advView from '$v/adv.html'

import loginView from '$v/login.ejs'  //ejs引入之后得到的是个函数
import advView from '$v/adv.ejs'
import adminListView from '$v/adminList.ejs'
import advListView from '$v/advList.ejs'

import request from './util/request.js'

const router = new SMERouter('app', 'html5')
window.router = router  //window是浏览器的全局对象 把router放到window中 就是把router放到全局当中

// 默认hash路由 http://127.0.0.1:8888/#/login

// 创建路由
// 二级路由需要next（）方法传递下去
router.route('/login', (req, res) => {
    res.render(loginView()) //render可以显示标签样式

})

router.route('/adv', (req, res, next) => {
    // res.render(advView()) //render可以显示标签样式  

    // 高亮显示的逻辑：
    // 在req中有个url属性，当点击不同的按钮时，它的url值不同 根据这个原理可以进行高亮匹配
    // 当点击相应的按钮时 进行逻辑判断 如果url值是对应的路径 则返回active不然返回空
    // console.log(req,'req')  

    // response中有个方法subRoute,可以生成一个渲染二级页面的节点，把这个方法放入一级页面中的对应位置，二级路由就知道在哪儿进行渲染页面
    next(advView({
        subRoute: res.subRoute(),
        url: req.url
    }))
})


// 绑定二级路由
router.route('/adv/adminList', (req, res) => {
    res.render(adminListView())

    const saveAdminBtn = document.getElementById('saveAdminBtn')
    saveAdminBtn.onclick = async function () {
        const adminName = document.adminForm.adminName.value.trim()
        const password = document.adminForm.password.value.trim()
        const rePassword = document.adminForm.rePassword.value.trim()

        if (!adminName || !password || !rePassword) {
            return alert('输入内容不能为空')
        }
        if (password !== rePassword) {
            return alert('输入密码不一致')
        }
        try {
            await request.post('/addAdmin', {
                adminName: adminName,
                password: password,
                regTime: new Date().toLocaleString()
            })
            alert('添加成功')
            // console.log(re,'re');
        } catch (e) {
            alert('服务异常' + e.message)
        }

    }

})

router.route('/adv/advList', (req, res) => {
    res.render(advListView())
})